package com.starry.module.system.core.code.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.starry.db.core.entity.TenantBaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * 编码规则配置-实体
 * @author xiaoke
 */
@Schema(description = "编码规则配置实体")
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_code_rule_config")
public class CodeRuleConfig extends TenantBaseEntity {

    /**
     * 主键ID
     */
    @TableId
    private Long id;

    /**
     * 规则唯一标识
     */
    @Schema(description = "规则唯一标识")
    private String ruleKey;
    /**
     * 规则名称
     */
    @Schema(description = "规则名称")
    private String ruleName;
    /**
     * 固定前缀
     */
    @Schema(description = "固定前缀")
    private String prefix;
    /**
     * 日期格式
     */
    @Schema(description = "日期格式")
    private String dateFormat;
    /**
     * 序号类型（1-自增 2-时间戳 3-随机数）
     */
    @Schema(description = "序号类型（1-自增 2-时间戳 3-随机数）")
    private Integer seqType;
    /**
     * 序号长度（不足补零）
     */
    @Schema(description = "序号长度（不足补零）")
    private Integer seqLength;
    /**
     * 当前序号值
     */
    @Schema(description = "当前序号值")
    private Long currentSeq;
    /**
     * 序号重置方式（1-不重置 2-按日 3-按月 4-按年）
     */
    @Schema(description = "序号重置方式（1-不重置 2-按日 3-按月 4-按年）")
    private Integer resetType;
    /**
     * 固定后缀
     */
    @Schema(description = "固定后缀")
    private String suffix;
    /**
     * 各部分分隔符
     */
    @Schema(description = "各部分分隔符")
    private String delimiter;
    /**
     * 是否启用Redis缓存
     */
    @Schema(description = "是否启用Redis缓存")
    private Integer enableCache;
    /**
     * 规则描述
     */
    @Schema(description = "规则描述")
    private String description;
}

